Amazon CloudWatch で EBS の I/O レイテンシーを確認できるようになりました

Amazon CloudWatch で EBS の I/O レイテンシーを確認できるようになりました

Clock Icon2024.11.05

はじめに

Amazon CloudWatch に EBS ボリュームの新しいメトリクスが追加され。読み取りと書き込みのレイテンシーをモニタリングできます。

なにが嬉しいのか

従来は CloudWatch のメトリクスから EBS の I/O レイテンシーを確認するには Metric Math を使用して計算する必要がありました。

Amazon_の_Amazon_CloudWatch_メトリクス_EBS_-_Amazon_EBS

引用: Amazon の Amazon CloudWatch メトリクス EBS - Amazon EBS

今回のアップデートにより、レイテンシーを直接表示するメトリクスが追加され、パフォーマンスモニタリングするための手間が減りました。これは嬉しい。

メトリクス___CloudWatch___ap-northeast-1_-4

新メトリクスの概要

Amazon CloudWatch に以下 2 つの新しいメトリクスが追加されています。

  • VolumeAvgReadLatency:読み取り操作の 1 分平均レイテンシー
  • VolumeAvgWriteLatency:書き込み操作の 1 分平均レイテンシー

Nitro 世代のインスタンスにアタッチされたのすべてのボリュームタイプをサポートしています。
ただし、ECS/Fargate のタスクにアタッチされたボリュームはサポートされていません。

負荷テストによる I/O レイテンシー変化を観測してみた

fio を使用して EBS(gp3)へ負荷をかけて I/O レイテンシーの変化を観測してみます。

検証環境

EC2インスタンス仕様

項目 仕様
Instance Type c7i.2xlarge
vCPU 8
Memory 16GB
OS Amazon Linux 2023

EBSボリューム仕様

項目 gp3
サイズ 50GB
IOPS 3,000
スループット 125 MB/s

負荷テスト方法

fio を使用して EBS に対して小さいファイルの読み書きを行い負荷をかけました。

[global]
ioengine=libaio
direct=1
time_based=1
runtime=300
norandommap=1
randrepeat=0
directory=/data/gp3-1
group_reporting=1
runtime=180
norandommap=1

[stress-test]
description=Random mixed read/write test for high latency
rw=randrw
rwmixread=70
bs=4k
iodepth=32
numjobs=8
size=6G

実行結果

負荷をかけることで、I/O レイテンシーの悪化が新メトリクスによって確認できました。

時系列でのレイテンシー変化も容易に確認できます。

メトリクス___CloudWatch___ap-northeast-1-21

メトリクス___CloudWatch___ap-northeast-1-22

最大と最小値を表示した様子。

メトリクス___CloudWatch___ap-northeast-1-23

まとめ

既存のスループット、IOPS のメトリクスに加え、I/O レイテンシーのメトリクスが追加されたことで、簡単にパフォーマンスモニタリングできるようになりました。以下のようなユースケースに対応できるのではないでしょうか。

  1. 1 分単位でのリアルタイムなパフォーマンスモニタリング
  2. 読み取り/書き込み別のボトルネック調査
  3. 長期的なトレンド分析からのキャパシティプランニング

おわりに

そのうち Compute Optimizer のレコメンデーションも I/O レイテンシーのメトリクスを加味した結果を返してくれるようになるのではないかと思いながら検証していました。

https://dev.classmethod.jp/articles/optimizer-ebs-recommendations/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.